
/**
 * I 对象:
 * 1.实例对象和函数对象
 *    实例对象  new 出来的
 *    函数对象
 * 2.异步函数和同步函数
 * 
 * II 两种类型的回调:
 * 1. 同步回调
 * 理解：立即执行，完全执行了才结束，不会放入回调队列中
 * 例子：数组遍历相关的回调函数 / Promise的executor函数
 * 2. 异步回调
 * 理解：不会立即执行，会放入回调队列中将来执行
 * 例子：定时器回调、Ajax回调、Promise的成功|失败回调
 * III 异常处理 error
 * 1. 常见的异常
 *    未定义
 *    类型错误
 *    引用错误
 *    语法处理
 * 2. 异常处理方式 
 *    捕获异常
 *    抛出异常
 * 
 */

//函数对象
function Person(name,age){
  this.name = name;
  this.age = age;
}
    
// 实例对象
var person = new Person("admin",18);
// 函数对象
console.log(Person.prototype );
/* $("div");// jquery函数对象
$('<div></div>') // jquery 函数对象
$.ajax({})  */  // 函数对象

//------------------- 函数回调------------
let arr = [2,45,54,34];
//  同步函数 立即执行 执行完成以后才会执行接下来的代码
arr.forEach((item)=>{
  console.log(item);
})
console.log("forEach 执行之后-----");

// 异步回调函数在执行对列中  在将来的某个时间短去执行
setTimeout(() => {
  console.log("setTimeout 执行-----");
}, 1000);
console.log("setTimeOut执行之后------");


//-----------------------异常处理------------------

function timeCircle(){

  if(Date.now()%2===1){
    console.log("代码正常执行"+Date.now());
  }else{
    throw  Error("代码异常");
  }
}
//timeCircle();
// 捕捉异常

try{
  let person;
  console.log(person.name);
  
}catch(error){
  // Cannot read property 'name' of undefined
  console.log(error.message);
}